package com.yuantu.judiciary.service;

import com.yuantu.judiciary.model.dto.AccountInfoDTO;
import com.yuantu.judiciary.model.enums.AccountState;
import com.yuantu.judiciary.model.enums.EndpointType;
import com.yuantu.judiciary.model.form.*;
import com.yuantu.judiciary.model.vo.*;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 用户信息
 *
 * @author syw
 * @since 2023-08-03
 **/
public interface IUserService {

    AccountInfoDTO getUserAccountInfoByApp(LoginAppForm form);

    AccountInfoDTO getUserAccountInfoByWeb(LoginAppForm form);

    AccountInfoDTO getUserAccountInfo(LoginForm form);

    AccountInfoDTO getUserAccountInfoByMachine(LoginMachineForm form);

    AccountInfoDTO getUserAccountInfoByApplet(LoginAppletForm form);

    AccountInfoDTO getUserAccountInfoByAliApplet(LoginAliAppletForm form);

    AccountInfoDTO getUserAccountInfoByAliAppletWithoutVerify(LoginAliAppletWithoutVerifyForm form);

    AccountInfoDTO getUserAccountInfoById(Long accountId);

    Boolean add(LoginForm form);

    Boolean modify(ModifySysUserInfoForm form);

    Boolean delete(Long accountId, List<Long> id);

    PageVO<SysUserInfoVO> list(GetSysUserInfoForm form, Pageable pageable);

    Boolean registerOrg(Long accountId, RegisterForm form);

    String registerBind(RegisterBindForm form);

    TokenVO registerBindShare(RegisterBindShareForm form);

    Boolean modifyOrg(Long accountId, RegisterForm form);

    RegisterForm getOrg(Long accountId);

    UserInfoVO getUserInfo(Long accountId);

    AccountInfoDTO exchange(Long accountId);

    List<AccountInfoVO> listOrg(Long accountId);

    String verifyAccount(Long userId);

    List<AccountInfoVO> searchAccount(SearchAccountForm form);

    List<AccountInfoVO> searchOrgAccount(SearchAccountForm form);

    Boolean modifyAccount(Long accountId, ModifyAccountForm form);

    OrgSimpleVO findOrgInfoByCreditCode(String creditCode);

    List<AccountInfoVO> queryAliUserInfos(String userName);

    BlackInfoVO queryUserIsBlack(String idNumber);

    Boolean isShare(Long accountId);

    String getPhoneInfo(String phoneCode);

    Boolean isDivide(Long accountId);

    EnterSimpleInfoVO getEnterInfo(Long orgId);

    Boolean updateEnterInfo(EnterSimpleInfoVO enterSimpleInfo);

    AccountInfoDTO registerOrgUser(AccountWebRegisterVO webRegister);

    AccountInfoDTO getAccountInfoByAccountId(Long accountId);
}
